#define __JOIN__(x,y)  x##y

#define RECURSE_A_0(x) (x)(0,)
#define RECURSE_A_1(x) (x)(1,RECURSE_A_0(x))
#define RECURSE_A_2(x) (x)(2,RECURSE_A_1(x))
#define RECURSE_A_3(x) (x)(3,RECURSE_A_2(x))
#define RECURSE_A_4(x) (x)(4,RECURSE_A_3(x))
#define RECURSE_A_5(x) (x)(5,RECURSE_A_4(x))
#define RECURSE_A_6(x) (x)(6,RECURSE_A_5(x))
#define RECURSE_A_7(x) (x)(7,RECURSE_A_6(x))
#define RECURSE_A_8(x) (x)(8,RECURSE_A_7(x))
#define RECURSE_A_9(x) (x)(9,RECURSE_A_8(x))
#define RECURSE_A_10(x) (x)(10,RECURSE_A_9(x))
#define RECURSE_A_11(x) (x)(11,RECURSE_A_10(x))
#define RECURSE_A_12(x) (x)(12,RECURSE_A_11(x))
#define RECURSE_A_13(x) (x)(13,RECURSE_A_12(x))
#define RECURSE_A_14(x) (x)(14,RECURSE_A_13(x))

#define RECURSE_B_0(x)  (x)(,0)
#define RECURSE_B_1(x)  (x)(RECURSE_B_0(x),1)
#define RECURSE_B_2(x)  (x)(RECURSE_B_1(x),2)
#define RECURSE_B_3(x)  (x)(RECURSE_B_2(x),3)
#define RECURSE_B_4(x)  (x)(RECURSE_B_3(x),4)
#define RECURSE_B_5(x)  (x)(RECURSE_B_4(x),5)
#define RECURSE_B_6(x)  (x)(RECURSE_B_5(x),6)
#define RECURSE_B_7(x)  (x)(RECURSE_B_6(x),7)
#define RECURSE_B_8(x)  (x)(RECURSE_B_7(x),8)
#define RECURSE_B_9(x)  (x)(RECURSE_B_8(x),9)
#define RECURSE_B_10(x)  (x)(RECURSE_B_9(x),10)
#define RECURSE_B_11(x)  (x)(RECURSE_B_10(x),11)

#define RECURSE_C_0(a,x) x(a,0)
#define RECURSE_C_1(a,x) RECURSE_C_0(a,x),x(a,1)
#define RECURSE_C_2(a,x) RECURSE_C_1(a,x),x(a,2)
#define RECURSE_C_3(a,x) RECURSE_C_2(a,x),x(a,3)
#define RECURSE_C_4(a,x) RECURSE_C_3(a,x),x(a,4)
#define RECURSE_C_5(a,x) RECURSE_C_4(a,x),x(a,5)
#define RECURSE_C_6(a,x) RECURSE_C_5(a,x),x(a,6)
#define RECURSE_C_7(a,x) RECURSE_C_6(a,x),x(a,7)
#define RECURSE_C_8(a,x) RECURSE_C_7(a,x),x(a,8)
#define RECURSE_C_9(a,x) RECURSE_C_8(a,x),x(a,9)
#define RECURSE_C_10(a,x) RECURSE_C_9(a,x),x(a,10)
#define RECURSE_C_11(a,x) RECURSE_C_10(a,x),x(a,11)
#define RECURSE_C_12(a,x) RECURSE_C_11(a,x),x(a,12)

